home *** CD-ROM | disk | FTP | other *** search
/ Aminet 21 / Aminet 21 (1997)(GTI - Schatztruhe)[!][Oct 1997].iso / Aminet / game / patch / DdlbugHD.lha / Doodlebug / src / dbhd / DoodleBugHD.asm < prev    next >
Assembly Source File  |  1997-07-24  |  3KB  |  165 lines

  1. ; *** Doodlebug HD Loader V1.0
  2. ; *** Written by Keith Krellwitz (kkrellwi@nmu.edu)
  3.  
  4. blocksize    =    $200
  5.  
  6.     MACHINE    68000
  7.  
  8.     include    "/lib/libs.i"
  9.     include    "/lib/macros.i"
  10.     include    "/lib/refs.i"
  11.  
  12.     ; ** now I prefer putting HD_PARAMS here
  13.     ; ** (for a future extension: possible JOTDLoad similar to WHDLoad)
  14.  
  15.     HD_PARAMS    "dbug.d","CON:20/20/350/200/Doodlebug HD Loader/AUTO",STD_DISK_SIZE,1
  16.  
  17. _loader:
  18.     move.l    d0,trainer    
  19.     Mac_printf    "Doodlebug HD Loader & fix v1.1"
  20.     Mac_printf    "Programmed by Keith Krellwitz (Abaddon) ©1997"
  21.     Mac_printf    "AGA-Fix by Jean-François Fabre"
  22.  
  23.     tst.l    D0
  24.     beq    notrain
  25.     NEWLINE
  26.     Mac_printf    "Trainer activated"
  27. notrain:
  28.     JSRABS    LoadDisks
  29.     JSRABS    TransfRoutines
  30.  
  31.     move.l    #CACRF_CopyBack,D1
  32.     moveq.l    #0,D0
  33.     JSRABS    Degrade
  34.  
  35.     GO_SUPERVISOR
  36.     SAVE_OSDATA    $80000
  37.  
  38. ;    move.w    #$4E75,$C0        ; for a future breakpoint
  39.  
  40.     GETUSRADDR    BootGame
  41.     move.l    D0,A0
  42.     jmp    (A0)            ; now we'll be in relocated section
  43.  
  44.  
  45. _UserPatchRoutines:
  46.  
  47. BootGame:
  48.     LEA    $00000400,A7
  49.     MOVE.W    #$7FFF,$00DFF09A
  50.     MOVE.W    #$7FFF,$00DFF09C
  51.     MOVE.W    #$7FFF,$00DFF096
  52.     MOVE    #$2100,SR
  53.  
  54.     lea    $400,a0
  55.     move.l    #$16,d1                ;<--track offset of main in image
  56.     move.l    #$b9,d2                ;<--length of main
  57.     moveq.l    #0,D0
  58.     JSRGEN    ReadRobSectorsFast
  59.  
  60.     bsr        patloader
  61.  
  62.     JSRGEN    FlushCachesHard
  63.     JSRGEN    ResetSprites
  64.     move.l    #$fff,$dff180
  65.     jmp    $400.W
  66.  
  67. patloader:
  68.     PATCHUSRJMP    $54e,rmain
  69.     JSRGEN    FlushCachesHard        ; don't forget to flush caches
  70.     rts
  71.  
  72. rmain:
  73.     bsr        patmain
  74.     move.l    #$5c4e75,-(a7)
  75.     move.l    #$204fef,-(a7)
  76.     move.l    #$4cef7fff,-(a7)
  77.     move.l    #$538166fa,-(a7)
  78.     move.l    #$66fa4219,-(a7)
  79.     move.l    #$12d85380,-(a7)
  80.     move.l    #$2549005c,-(a7)
  81.     move.l    #$45fafffe,-(a7)
  82.     JSRGEN    FlushCachesHard        ; again ;-)
  83.     jmp        (a7)
  84.  
  85. patmain:
  86. ;    JSR    $C0            ; if I want to break here...
  87.     STORE_REGS            ; macro does it
  88. ;    movem.l    d0-d7/a0-a6,-(a7)
  89.                             ; patch loader
  90.     PATCHGENJSR    $2dccc,ReadRobSectorsFast    ; actually it's RN routine
  91.                             ; (Core games always use RN routines)
  92.  
  93.     move.l    #$4cdf3ffe,$2dcd2
  94.     move.w    #$4e75,$2dcd6
  95.  
  96.                             ; patch protection
  97.     lea    $46352,a0
  98.     move.l    #$23fc35b2,(a0)+
  99.     move.l    #$30680000,(a0)+
  100.     move.w    #$c68a,(a0)
  101.     move.l    #$460de,$698.W
  102.     move.l    #$35b23068,$100.W
  103.                     ;patch quit
  104.     PATCHUSRJSR    $8a38,KbInt
  105.     move.w    #$4e71,$8a3e
  106.  
  107.                     ; patch drive LED
  108.     move.w    #$600E,$883C
  109.  
  110.                     ; insert blitter waits
  111.                     ; to avoid gfx bugs
  112.     PATCHGENJSR    $1BE7E,WaitBlit
  113.     PATCHGENJSR    $21140,WaitBlit
  114.     PATCHGENJSR    $2192E,WaitBlit
  115.     PATCHGENJSR    $21C8A,WaitBlit
  116.     PATCHGENJSR    $21EC2,WaitBlit
  117.  
  118.     PATCHGENJMP    $2B9E2,WaitBlit
  119.     PATCHGENJMP    $2BA2A,WaitBlit
  120.  
  121.     PATCHUSRJSR    $28D5E,BlitAndWait
  122.     PATCHUSRJSR    $28D6E,BlitAndWait
  123.     PATCHUSRJSR    $28D7E,BlitAndWait
  124.     PATCHUSRJSR    $28D8E,BlitAndWait
  125.     PATCHUSRJSR    $28DAA,BlitAndWait
  126.     PATCHUSRJSR    $28DBE,BlitAndWait
  127.     PATCHUSRJSR    $28DD2,BlitAndWait
  128.     PATCHUSRJSR    $28DE6,BlitAndWait    ; if more, do automatic search
  129.  
  130.                     ;patch trainer
  131.     move.l    trainer(pc),D0        ;for relocatability
  132.     beq    notrainer
  133.     move.b    #$46,$2b323
  134.     move.l    #$60220024,$2b328
  135. notrainer:
  136.     JSRGEN    FlushCachesHard
  137. ;    movem.l    (a7)+,d0-d7/a0-a6
  138.     RESTORE_REGS            ; use the macros, it's easier
  139.     rts
  140.     
  141.                     ; actually wait and blit (better)
  142. BlitAndWait:
  143.     JSRGEN    WaitBlit
  144.     move.w    D5,($DFF058)        ; do the blit
  145.     rts
  146. KbInt:
  147.     movem.l    d0,-(a7)
  148.     bset    #$0,$bfee01
  149.     not.b    d0
  150.     ror.b    #$1,d0
  151.     cmp.b    #$58,d0                ; f9    
  152.     bne    noquit
  153.     JSRGEN    InGameExit
  154. noquit:
  155.     movem.l    (a7)+,d0
  156.     rts
  157. trainer:
  158.     dc.l    0
  159. _general_pbuffer
  160.     dc.l    0
  161. _user_pbuffer
  162.     dc.l    0
  163. _EndUserPatchRoutines:
  164.  
  165.